<?php

/**
 * \file
 * Classe `SelectBox`.
 */

namespace pilar\SimpleFormMembers /* \cond */ ; /* \endcond */
{

/**
 * Boite de sélection.
 *
 * \since 22/09/2008
 * \author Matthieu OVIEDO <matthieu.oviedo@gmail.com>
 */
class SelectBox extends \pilar\Forms\Member {

/**
 * Options possibles.
 *
 * \since 02/12/2008
 */
private $_options = array();


protected function loadDefaultParams() {
 parent::loadDefaultParams();

 $this->params->define(array(
  /**
   * \c TRUE si l'utilisateur peut sélectionner plusieurs options.
   *
   * \since 25/04/2009
   */
  'multiple' => false,

  /**
   * Nombre de lignes de la boite de sélection.
   *
   * \since 25/04/2009
   */
  'size' => 12,

  'options' => array() // Rend possible l'initialisation d'options via la
                       // configuration du membre.
 ));
}


protected function initialize() {
 parent::initialize();
 
 $this->joinField(); // Déclaration du champ principal.

 // Ajout des options de base depuis la configuration du membre :
  foreach($this->get('options') as $v => $c) {
   $this->addOption($v, $c);
  }
}


/**
 * Ajoute une option.
 *
 * \param $v Valeur de l'option.
 * \param $c Intitulé de l'option.
 *
 * \since 02/12/2008
 */
public function addOption($v, $c) {
 $this->_options[] = array($v, $c);
}


public function guiDomNode($domDoc) {
 $domGui = $domDoc->createElement('gui');

 $domSelect = $domDoc->createElement('select');

 $domSelect->setAttribute('id', $this->globalId());
 $domSelect->setAttribute('name', $this->globalId());
 $domSelect->setAttribute('title', $this->get('label'));

 if ($this->get('multiple')) {
  $domSelect->setAttribute('multiple', 'multiple');
  $domSelect->setAttribute('size', $this->get('size'));
 }

 foreach($this->_options as $option) {
  $domOption = $domDoc->createElement('option', $option[1]);
  $domOption->setAttribute('value', $option[0]);
  $domSelect->appendChild($domOption);
 }

 $domGui->appendChild($domSelect);

 return $domGui;
}


protected function outputGuiController() { ?>
<?php if($this->value() != '') { ?>
$('#<?php echo $this->globalId() ?>').val('<?php echo $this->value() ?>');
<?php } ?>
<?php if($this->status() == 'invalid') { ?>
$('#<?php echo $this->globalId() ?>').addClass('invalid');
<?php } ?>
<?php
}


} // Class.

} // Namespace.

?>
